package pl;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.FileDialog;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.PushbackReader;

import javax.swing.JScrollPane;
import javax.swing.JLabel;
import javax.swing.JTextArea;



public class Main extends JFrame {

	private JFrame Ventana;
	private JPanel contentPane;
	private String archivoElegido="", codigo=""; // Variable global
	private JTextArea textAreaCodigo;
	private PushbackReader lectura;
	private JTextArea textAreaTokens;
	private Lexico lexico, lexico2;
	private Errores errores;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Main frame = new Main();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Main() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 734, 434);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JButton btnCargarArchivo = new JButton("Cargar Archivo");
		btnCargarArchivo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				elegirArchivo(); //Seleccionar archivo
				leerArchivo(); //Leer archivo seleccionado
				
				
			}
		});
		btnCargarArchivo.setBounds(10, 11, 134, 23);
		contentPane.add(btnCargarArchivo);
		
		JButton btnCompilar = new JButton("Compilar");
		btnCompilar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {		
				try {
					
					/** Lexico **/
					lectura = new PushbackReader(new FileReader(archivoElegido));
					lexico = new Lexico(lectura,errores);
				
				
				
				
				
				} catch (FileNotFoundException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				
				
				
				
				
			}
		});
		btnCompilar.setBounds(150, 11, 89, 23);
		contentPane.add(btnCompilar);
		
		JLabel lblCodigo = new JLabel("C\u00F3digo:");
		lblCodigo.setBounds(10, 45, 46, 14);
		contentPane.add(lblCodigo);
		
		textAreaCodigo = new JTextArea();
		textAreaCodigo.setEditable(false);
		textAreaCodigo.setBounds(10, 70, 193, 237);
		contentPane.add(textAreaCodigo);
		
		textAreaTokens = new JTextArea();
		textAreaTokens.setEditable(false);
		textAreaTokens.setBounds(234, 70, 206, 237);
		contentPane.add(textAreaTokens);
		
		JLabel lblTokens = new JLabel("Tokens:");
		lblTokens.setBounds(234, 45, 46, 14);
		contentPane.add(lblTokens);
	
	
	}// Fin Main()
	
	/** Metodo cargar archivo **/
	public void elegirArchivo() {
		FileDialog archivo = new FileDialog(Ventana);
		archivo.setVisible(true);
		archivoElegido = archivo.getDirectory()+archivo.getFile();
		
		//textAreaCodigo.setText(codigo); // Escribir en el textAreaCodigo el codigo.
	}
	
private void leerArchivo(){
		
		String c="";
		boolean cont=true;
		try
		{
		   FileReader fr = new FileReader(archivoElegido);
		   int caract = fr.read();
		   while(caract != -1)
		   {
			   c = String.valueOf((char)caract);
			   codigo+=c;
		       caract = fr.read();		       
		   }
		   fr.close();
		   textAreaCodigo.setText(codigo);
		}
		catch (Exception e)
		{
		   System.out.println("Error de lectura del fichero");
		}
	}	

	
	
	
	
}//Fin clase
